var API = (function () {
  // 提取统一的url部分
  const BASE_URL = "https://study.duyiedu.com";
  const TOKEN_KEY = "token";

  // 封装 get 和 post 函数
  function get(path) {
    // 默认请求头是个空对象
    const headers = {};
    // 获取token
    const token = localStorage.getItem(TOKEN_KEY);
    if (token) {
      // 如果有token 就写入到header里去
      headers.authorization = `Bearer ${token}`;
    }
    // 发送fetch
    return fetch(BASE_URL + path, { headers });
  }
  function post(path, bodyObj) {
    // 默认请求头是个空对象
    const headers = {
      "Content-Type": "application/json",
    };
    // 获取token
    const token = localStorage.getItem(TOKEN_KEY);
    if (token) {
      // 如果有token 就写入到header里去
      headers.authorization = `Bearer ${token}`;
    }
    // 发送fetch
    return fetch(BASE_URL + path, {
      headers,
      method: "POST",
      body: JSON.stringify(bodyObj),
    });
  }
  // 用户注册函数
  // async function reg(userInfo){
  //   return await   fetch(BASE_URL + '/api/user/reg',{
  //         method:'POST',
  //         headers :{
  //             'content-Type' : 'application/json'
  //         },
  //         body: JSON.stringify(userInfo)
  //      }).then(resp =>resp.json())
  // }
  // 另一种写法
  async function reg(userInfo) {
    const resp = await post("/api/user/reg", userInfo);
    return await resp.json();
  }

  //   用户登录函数
  async function login(loginInfo) {
    const resp = await post("/api/user/login", loginInfo);
    const result = await resp.json();
    // 如果登录成功 保存响应头中的token  到 localStorage
    if (result.code === 0) {
      const token = resp.headers.get("authorization");
      localStorage.setItem(TOKEN_KEY, token);
    }

    return result;
  }

  // 侧面 画像
  async function profile() {
    const resp = await get("/api/user/profile");
    return await resp.json();
  }

  // 验证用户名是否存在
  async function exists(loginId) {
    const resp = await get("/api/user/exists?loginId=" + loginId);
    return await resp.json();
  }

  // 发送聊天内容
  async function sendChat(content) {
    const resp = await post("/api/chat", { content: content });
    return await resp.json();
  }

  // 获取聊天列表
  async function getHistory() {
    const resp = await get("/api/chat/history");
    return await resp.json();
  }
  // 退出登录
  function loginOut() {
    localStorage.removeItem(TOKEN_KEY);
  }
  return {
    login,
    loginOut,
    getHistory,
    exists,
    reg,
    sendChat,
    profile,
  };
})();
